#include<bits/stdc++.h>
#define lt id<<1
#define rt id<<1|1
using namespace std;
const int N=1e5+10,M=N<<2;
int n,k,q,sz,a[N],dp1[N],dp2[N],lst[N],nxt[N];
int cnt,stk[N];
long long ans;
void check()
{
	cnt=0;
	for(int i=1;i<=n;i++)
	{
		while(cnt&&a[stk[cnt]]<=a[i]) --cnt;
		lst[i]=stk[cnt];stk[++cnt]=i;
	}
	cnt=0;
	for(int i=n;i;i--)
	{
		while(cnt&&a[stk[cnt]]<=a[i]) --cnt;
		nxt[i]=stk[cnt];stk[++cnt]=i;
	}
	for(int i=1;i<=n;i++) dp1[i]=dp2[i]=0;
}
void dfs1(int x)
{
	if(!x||dp1[x]) return;
	dfs1(lst[x]);
	dp1[x]=dp1[lst[x]]+1;
}
void dfs2(int x)
{
	if(!x||dp2[x]) return;
	dfs2(nxt[x]);
	dp2[x]=dp2[nxt[x]]+1;
}
int main()
{
	freopen("summer.in","r",stdin);
	freopen("summer.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++) scanf("%d",a+i);
	scanf("%d",&q);
	int x,l,r;
	while(q--)
	{
		scanf("%d%d%d",&x,&l,&r);
		swap(a[x],a[x+1]);
		check();
		for(int i=l;i<=r;i++)
		{
			dfs1(i),dfs2(i);
			ans=1ll*(dp1[i]+dp2[i]-2)*k;
		}
		ans+=1ll*(r-l+1)*(n-1);
		printf("%lld\n",ans);
	}
	fclose(stdin);fclose(stdout);
	return 0;
}
